package com.teamone.etl.datasource.service;

import com.teamone.etl.exception.CustomException;
import java.util.List;
import java.util.Map;

/**
 @author WangZhuoRan */
public interface DataSourceFeignService {

    /**
     根据(DataSource)的主键id获得所有数据库的名字
     @param id (DataSource)的主键id
     @return List<String> 数据库的名字集合
     @throws CustomException 统一异常
     */
    List<String> getAllDataBaseByDataSourceId (Integer id) throws CustomException;

    /**
     根据数据库名获得所有表名
     @param id (DataSource)的主键id
     @param dataBaseName 数据库名称
     @return List<String> 表名的集合
     @throws CustomException 统一异常
     */
    List<String> getAllTableByDataBaseName (Integer id, String dataBaseName) throws CustomException;

    /**
     获得列名及 注释 类型 类型长度
     @param id (DataSource)的主键id
     @param tableName 表名
     @param dataBaseName 数据库名
     @return Map<String, List<String>> 键值分别是 column/columnType/columnComment/columnTypeLength/columnIsNullable
     @throws CustomException 统一异常
     */
    Map<String, List<String>> getAllColumnByTableName (Integer id, String tableName, String dataBaseName) throws CustomException;
}
